package model;

/**
 * Armazena informçoes para construção da Tabela de Símbolos, tais como o
 * lexema,o escopo e o tipo de objeto.
 * 
 * @author Alen e Jody
 * 
 */
public class STContent {
    protected String lexeme;
    protected String scope;
    protected IDType content;

    public STContent(String lexeme, String scope, IDType content) {
	this.scope = scope;
	this.lexeme = lexeme;
	this.content = content;
    }

    public STContent(String lexeme, String scope) {
	this.scope = scope;
	this.lexeme = lexeme;
    }

    public IDType getContent() {
	return content;
    }

    public void setContent(IDType content) {
	this.content = content;
    }

    public String getScope() {
	return scope;
    }

    public void setScope(String scope) {
	this.scope = scope;
    }

    public String getLexeme() {
	return lexeme;
    }

    public void setLexeme(String lexeme) {
	this.lexeme = lexeme;
    }

    @Override
    /**
     * Verifica o escopo de um objeto.
     */
    public boolean equals(Object obj) {
	STContent test = (STContent) obj;
	String[] scope2teste = this.scope.split("@");
	for (int i = 0; i < scope2teste.length; i++)
	    if (test.lexeme.equals(this.lexeme)
		    && (test.scope.equals(scope2teste[i])
			    || test.scope.equals("global") || test.scope
				.equals(this.scope)))
		return true;
	return false;
    }
}
